package main

import "fmt"

func main() {
	//在 Go 语言里，当你声明变量时如果不明确指定变量的类型，有两种情况可以进行类型推断：
	// 使用 := 语法：这是一种短变量声明语法，它只能在函数内部使用。通过 := 可以在声明变量的同时进行初始化，
	// Go 编译器会根据等号右边表达式的值自动推断出变量的类型。
	// 使用 var = expression 语法：在使用 var 关键字声明变量时，如果省略了类型，直接给变量赋值一个表达式，
	// Go 编译器同样会根据表达式的值来推断变量的类型。

	var i = 42      // 类型推断为 int
	var f = 3.14    // 类型推断为 float64
	var b = true    // 类型推断为 bool
	var s = "hello" // 类型推断为 string

	var j = i // 类型推断为 int

	fmt.Printf("i is of type %T\n", i)
	fmt.Printf("f is of type %T\n", f)
	fmt.Printf("b is of type %T\n", b)
	fmt.Printf("s is of type %T\n", s)
	fmt.Printf("j is of type %T\n", j)
}
